/**
 * 
 */
package cn.ad.server.web.spring.model.adview;

/**
 * 响应Asset Object 对象
 * 对应请求中的素材要求。 回应体必须包括对于素材的回应。每项 asset 只可以包括
		{title,img,video,data}的某一个类型， 其他类型的字段必须不存在或为空。每项 asset 必
		须设置请求体对应的 id，用于区分素材
		
	关于素材 title, img, video, data, 根据请求返回其中一种。
 * @author Administrator
 */
public class ResponseAsset {
	
	/**
	 * 不重复的素材 id， 对应请求体中的 id
	 */
	private int id;
	
	/**
	 * 设置为 1 表示素材必需，对应请求体
	 */
	private int required;
	
	/**
	 * 文本内容
	 */
	private Title title; 
	
	/**
	 * 图片内容
	 */
	private Image img;
	
	/**
	 * 视频内容
	 */
	private Video video;
	
	/**
	 * 数据内容
	 */
	private Data data;
	
	/**
	 * 行为记录的连接对象，当点击动作执行时调用。如果没有点击对象，使用上层的NativeResponse 的连接地址。
	 * AdView 暂时不处理该字段
	 */
	private Link link;
	
	/**
	 * 扩展内容
	 */
	private Object ext;
	
	/**
	 * @return the id
	 */
	public int getId() {
		return id;
	}

	/**
	 * @param id the id to set
	 */
	public void setId(int id) {
		this.id = id;
	}

	/**
	 * @return the required
	 */
	public int getRequired() {
		return required;
	}

	/**
	 * @param required the required to set
	 */
	public void setRequired(int required) {
		this.required = required;
	}

	/**
	 * @return the title
	 */
	public Title getTitle() {
		return title;
	}

	/**
	 * @param title the title to set
	 */
	public void setTitle(Title title) {
		this.title = title;
	}

	/**
	 * @return the img
	 */
	public Image getImg() {
		return img;
	}

	/**
	 * @param img the img to set
	 */
	public void setImg(Image img) {
		this.img = img;
	}

	/**
	 * @return the video
	 */
	public Video getVideo() {
		return video;
	}

	/**
	 * @param video the video to set
	 */
	public void setVideo(Video video) {
		this.video = video;
	}

	/**
	 * @return the data
	 */
	public Data getData() {
		return data;
	}

	/**
	 * @param data the data to set
	 */
	public void setData(Data data) {
		this.data = data;
	}

	/**
	 * @return the link
	 */
	public Link getLink() {
		return link;
	}

	/**
	 * @param link the link to set
	 */
	public void setLink(Link link) {
		this.link = link;
	}

	/**
	 * @return the ext
	 */
	public Object getExt() {
		return ext;
	}

	/**
	 * @param ext the ext to set
	 */
	public void setExt(Object ext) {
		this.ext = ext;
	}

	/**
	 * Title对象
	 * @author Administrator
	 */
	public class Title {
		
		/**
		 * 文本内容
		 */
		private String text;
		
		/**
		 * 扩展内容
		 */
		private Object ext;

		/**
		 * @return the text
		 */
		public String getText() {
			return text;
		}

		/**
		 * @param text the text to set
		 */
		public void setText(String text) {
			this.text = text;
		}

		/**
		 * @return the ext
		 */
		public Object getExt() {
			return ext;
		}

		/**
		 * @param ext the ext to set
		 */
		public void setExt(Object ext) {
			this.ext = ext;
		}
	}
	
	/**
	 * Image对象
	 * @author Administrator
	 *
	 */
	public class Image {
		
		/**
		 * 图片素材地址
		 */
		private String url;
		
		/**
		 * 图片宽度
		 */
		private int w;
		
		
		/**
		 * 图片高度
		 */
		private int h;
		
		/**
		 * 扩展内容
		 */
		private Object ext;

		/**
		 * @return the url
		 */
		public String getUrl() {
			return url;
		}

		/**
		 * @param url the url to set
		 */
		public void setUrl(String url) {
			this.url = url;
		}

		/**
		 * @return the w
		 */
		public int getW() {
			return w;
		}

		/**
		 * @param w the w to set
		 */
		public void setW(int w) {
			this.w = w;
		}

		/**
		 * @return the h
		 */
		public int getH() {
			return h;
		}

		/**
		 * @param h the h to set
		 */
		public void setH(int h) {
			this.h = h;
		}

		/**
		 * @return the ext
		 */
		public Object getExt() {
			return ext;
		}

		/**
		 * @param ext the ext to set
		 */
		public void setExt(Object ext) {
			this.ext = ext;
		}
	}
	
	/**
	 * Video对象
	 * @author Administrator
	 *
	 */
	public class Video {
		/**
		 * VAST xml
		 */
		private String vasttag;

		/**
		 * @return the vasttag
		 */
		public String getVasttag() {
			return vasttag;
		}

		/**
		 * @param vasttag the vasttag to set
		 */
		public void setVasttag(String vasttag) {
			this.vasttag = vasttag;
		}
	}
	
	/**
	 * Data对象
	 * @author Administrator
	 */
	public class Data {
		
		/**
		 * 格式化文本串名称
		 */
		private String label;
		
		/**
		 * 格式化文本内容，可以包括修饰字符，比如"$10"
		 */
		private String value;
		
		/**
		 * 扩展内容
		 */
		private Object ext;

		/**
		 * @return the label
		 */
		public String getLabel() {
			return label;
		}

		/**
		 * @param label the label to set
		 */
		public void setLabel(String label) {
			this.label = label;
		}

		/**
		 * @return the value
		 */
		public String getValue() {
			return value;
		}

		/**
		 * @param value the value to set
		 */
		public void setValue(String value) {
			this.value = value;
		}

		/**
		 * @return the ext
		 */
		public Object getExt() {
			return ext;
		}

		/**
		 * @param ext the ext to set
		 */
		public void setExt(Object ext) {
			this.ext = ext;
		}
	}
	
	/**
	 * Link对象
	 * @author Administrator
	 */
	public class Link {
		
		/**
		 * 点击跳转URL地址（落地页）
		 */
		private String url;
		
		/**
		 * 第三方点击监控地址，必须在点击目标地址前触发。
		 */
		private String[] clicktrackers;
		
		/**
		 * 替代落地页地址，如果设备无法访问url地址，使用本地址（可以用作deepLink的备选URL）
		 */
		private String fallback;
		
		/**
		 * 扩展内容
		 */
		private Object ext;

		/**
		 * @return the url
		 */
		public String getUrl() {
			return url;
		}

		/**
		 * @param url the url to set
		 */
		public void setUrl(String url) {
			this.url = url;
		}

		public String[] getClicktrackers() {
			return clicktrackers;
		}

		public void setClicktrackers(String[] clicktrackers) {
			this.clicktrackers = clicktrackers;
		}

		/**
		 * @return the fallback
		 */
		public String getFallback() {
			return fallback;
		}

		/**
		 * @param fallback the fallback to set
		 */
		public void setFallback(String fallback) {
			this.fallback = fallback;
		}

		/**
		 * @return the ext
		 */
		public Object getExt() {
			return ext;
		}

		/**
		 * @param ext the ext to set
		 */
		public void setExt(Object ext) {
			this.ext = ext;
		}
		
	}
}
